Allowing co-authoring of a document can oftentimes be a complex task. For example, if two or more users concurrently edit the same part or directly related parts of a document, conflicts may occur in the edits being made. Resolving conflicts and merging changes is oftentimes a challenge of a co-authoring enabled application. The challenge may be compounded when co-authoring edits are completed in an offline state since an application may not be aware of multiple users editing a same portion of a document until the changes are submitted.
Currently, there are various methods of dealing with or avoiding such merge conflicts. For example, some applications may follow a “last saved wins” model wherein a user's edits to content that are saved after another user's edits to the same or related content override the conflicting content of the first user. As can be appreciated, this method may be undesirable since edits made by a first user may be lost.
As another example, some applications may use a “first saved wins” model wherein changes made by a first user are applied and changes to the same or related content made by a second user are blocked from being saved to avoid a conflict. As can be appreciated, this method may be undesirable since users may be required to reapply their work on updated content.
As another example, some applications may allow a second user to decide if he/she wants to keep a first user's changes or to apply his/her own changes. That is, the second user may decide whether to use the “last saved wins” model or the “first saved wins” model. A problem with this method is that the user oftentimes must decide which changes to apply at save time, which can be an all-or-nothing scenario wherein one user's changes may be lost.
As another example, some applications lock parts of a document that are being authored or edited by another user. For example, if a first user may be editing a paragraph or a block of cells, a second user may be unable to edit the same section. This method may require the users to be online and can oftentimes be disruptive depending on the size of the area being locked. For example, an entire table of a spreadsheet may be blocked while other users may be trying to fill in data in unique columns they each own at the same time.
As can be appreciated, the current methods described above do not provide an easy way for multiple users to merge their changes. Oftentimes, current co-authoring methods reflect a big hammer approach where edits of one user win out over the other user. Challenges, such as the challenges described above, may make co-authoring difficult when conflicts arise, which may cause users to avoid co-authoring.
It is with respect to these and other considerations that the present invention has been made.